﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MJM.RPP.ComponentesNegocio;
using MJM.RPP.EntidadesNegocio;
using System.Data;
using System.Data.SqlClient;

namespace wRegPadron.Formularios
{
    public partial class AsistenciaGeneral : System.Web.UI.Page
    {
        private void GuardarLog(string msg, string Rango, string usuario)
        {
            SqlConnection conn = new SqlConnection("Server=192.168.106.251; DataBase=dbAuditoria; User ID=sa; PWD=omega2");
            SqlCommand cmd = new SqlCommand("sp_i_T_AUDACT_APPMUN_Insertar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            string ipaddress = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

            try
            {
                cmd.Parameters.Add(new SqlParameter("@vAUDACT_chUSUACT", usuario));
                cmd.Parameters.Add(new SqlParameter("@vAUDACT_chNOMAPP", "Gestión"));
                cmd.Parameters.Add(new SqlParameter("@vAUDACT_chNOMMOD", "Asistencia general web"));
                cmd.Parameters.Add(new SqlParameter("@vAUDACT_chNOMACC", "Consulta"));
                cmd.Parameters.Add(new SqlParameter("@vAUDACT_chVALENV", Rango));
                cmd.Parameters.Add(new SqlParameter("@vAUDACT_inESTACC", "1"));
                cmd.Parameters.Add(new SqlParameter("@vAUDACT_chEXCACC", ""));
                cmd.Parameters.Add(new SqlParameter("@vAUDACT_chDIRIP", ipaddress));
                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
            }
        }

        private void CargarTablaResumen(string nombre)
        {
            pBotonImprimir.Visible = false;
            PersonaTramiteCN obj = new PersonaTramiteCN();
            List<PersonaTramiteEN> lst=new List<PersonaTramiteEN>();
            if (rbAreas.Checked)
            {                
                var persona = new PersonaTramiteEN();
                persona.NombrePersona = nombre;
                persona.Eliminado = 1;
                persona.IdEstado = 1;
                persona.IdOficina = Convert.ToInt32(hfIdOficinaSeleccionada.Value);
                lst = obj.ListaGeneral(persona, 0);
            }
            else
            {
                lst = obj.ListarFuncionarios(nombre);
            }
            rAsistenciaPersonal.Visible = true;
            string inicio = bdpFechaInicio.SelectedDate.Year.ToString() + (bdpFechaInicio.SelectedDate.Month + 100).ToString().Substring(1, 2) + (bdpFechaInicio.SelectedDate.Day + 100).ToString().Substring(1, 2);
            string fin = bdpFechaFin.SelectedDate.Year.ToString() + (bdpFechaFin.SelectedDate.Month + 100).ToString().Substring(1, 2) + (bdpFechaFin.SelectedDate.Day + 100).ToString().Substring(1, 2);
            List<HorarioEN> lstHorarios = HorarioCN.ListarResumenPersonal(lst, inicio, fin);
            rAsistenciaPersonal.DataSource = lstHorarios;
            rAsistenciaPersonal.DataBind();
            
            if (lst.Count > 0)
            {
                lblFecha2.Text = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString();                
                pBotonImprimir.Visible = true;
                rHorario3.DataSource = lstHorarios;
                rHorario3.DataBind();
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                try
                {
                    pBotonImprimir.Visible = false;
                    hfUsuarioLogueado.Value = Session["Usuario"].ToString();                   
                    //lblUsuarioImprime.Text = hfUsuarioLogueado.Value.ToString(); 
                    //lblUsuarioImprime2.Text = hfUsuarioLogueado.Value.ToString();                    
                    lblUsuarioImprime.Text = "";
                    lblTitulo.Text = "Asistencia del personal";
                    lblDescripcion.Text = "Por medio de este formulario podrá consultar la hora de marcarción del personal de la institución";
                    hfIdOficinaSeleccionada.Value = "0";
                    bdpFechaInicio.SelectedDate = DateTime.Now.AddDays((-1) * (DateTime.Now.Day) + 1);
                    bdpFechaFin.SelectedDate = DateTime.Now;
                    rOficinas.Visible = false;
                    rAsistenciaPersonal.Visible = false;
                }
                catch
                {
                    Response.Redirect("http://gestion.munijesusmaria.gob.pe/appweb/wperspad/Login.aspx");
                }
            }
        }

        protected void rOficinas_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            if (e.CommandName == "Seleccionar")
            {
                hfIdOficinaSeleccionada.Value = ((HiddenField)(e.Item.FindControl("hfIdArea"))).Value;
                string soficina = ((Label)(e.Item.FindControl("lblOfic"))).Text;
                txtOficina.Text = soficina;
                rOficinas.Visible = false;
                CargarTablaResumen("");
                GuardarLog("", soficina + " / " + bdpFechaInicio.SelectedDate.ToShortDateString() + " - " + bdpFechaFin.SelectedDate.ToShortDateString(), hfUsuarioLogueado.Value.ToString());
            }
        }

        protected void btnBuscarOficina_Click(object sender, EventArgs e)
        {
            AreaCN objAreaCN = new AreaCN();
            AreaEN obj = new AreaEN();
            List<AreaEN> lst = objAreaCN.Listar2(txtOficina.Text);
            if (lst.Count > 1)
            {
                if (lst.Count > 10)
                    rOficinas.DataSource = lst.GetRange(0, 10);
                else
                    rOficinas.DataSource = lst;
                rOficinas.DataBind();
                rOficinas.Visible = true;
                //rPersonas.Visible = false;
            }
            else
            {
                if (lst.Count > 0)
                {
                    txtOficina.Text = lst[0].Area;
                    hfIdOficinaSeleccionada.Value = lst[0].Codigo.ToString();
                    CargarTablaResumen("");
                    GuardarLog("","Detalle: " + txtOficina.Text + " / " + bdpFechaInicio.SelectedDate.ToShortDateString() + " - " + bdpFechaFin.SelectedDate.ToShortDateString(), hfUsuarioLogueado.Value.ToString());

                }
            }
        }

        protected void rAsistenciaPersonal_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            if (e.CommandName == "VerDetalles")
            {
                int id = Convert.ToInt32(((HiddenField)(e.Item.FindControl("hfIdPersona"))).Value);
                string sfaltas = ((Label)(e.Item.FindControl("lblFaltas"))).Text;
                string stardanzas = ((Label)(e.Item.FindControl("lblTardanzas"))).Text;
                lblTardanzas2.Text = stardanzas;
                lblFaltas2.Text = sfaltas;
                string inicio = bdpFechaInicio.SelectedDate.Year.ToString() + (bdpFechaInicio.SelectedDate.Month + 100).ToString().Substring(1, 2) + (bdpFechaInicio.SelectedDate.Day + 100).ToString().Substring(1, 2);
                string fin = bdpFechaFin.SelectedDate.Year.ToString() + (bdpFechaFin.SelectedDate.Month + 100).ToString().Substring(1, 2) + (bdpFechaFin.SelectedDate.Day + 100).ToString().Substring(1, 2);
                PersonaSeleccionada.Text = ((Label)(e.Item.FindControl("lblNombrePersona"))).Text;
                lblPersonaSeleccionada2.Text = PersonaSeleccionada.Text;
                imgFoto.ImageUrl = "../ghFotoEmp.ashx?ID=" + id.ToString();
                List<HorarioEN> horarios = HorarioCN.Listar(id, inicio, fin);
                rHorario.DataSource = horarios;
                rHorario2.DataSource = horarios;
                rHorario.DataBind();
                rHorario2.DataBind();
                ModalPopupExtender1.Show();
                lblFecha.Text = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString();
                GuardarLog("", "Detalle: " + txtPersona.Text + " / " + bdpFechaInicio.SelectedDate.ToShortDateString() + " - " + bdpFechaFin.SelectedDate.ToShortDateString(), hfUsuarioLogueado.Value.ToString());
            }
        }

        protected void btnBusquedaPersona_Click(object sender, EventArgs e)
        {
            CargarTablaResumen(txtPersona.Text);
            GuardarLog("", "Detalle: "+txtOficina.Text + " / " + txtPersona.Text + " / " + bdpFechaInicio.SelectedDate.ToShortDateString() + " - " + bdpFechaFin.SelectedDate.ToShortDateString(), hfUsuarioLogueado.Value.ToString());
        }

        protected void btnLimpiarPersona_Click(object sender, EventArgs e)
        {
            txtPersona.Text = "";
            txtPersona.Focus();
        }

        protected void btnLimpiarOficina_Click(object sender, EventArgs e)
        {
            txtOficina.Text = "";
            txtOficina.Focus();
        }

        protected void rbAreas_CheckedChanged(object sender, EventArgs e)
        {
            btnBuscarOficina.Enabled = rbAreas.Checked;
            btnLimpiarOficina.Enabled = rbAreas.Checked;
        }

        protected void rbFuncionarios_CheckedChanged(object sender, EventArgs e)
        {
            btnBuscarOficina.Enabled = rbAreas.Checked;
            btnLimpiarOficina.Enabled = rbAreas.Checked;
            if (rbFuncionarios.Checked)
            {
                CargarTablaResumen("");
            }
        }

        protected void rHorario3_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            int IdPersona = 0;
            if(e.Item.ItemIndex>=0)
            {
                IdPersona = Convert.ToInt32(((HiddenField)(e.Item.FindControl("hfIdPersona2"))).Value);
                string inicio = bdpFechaInicio.SelectedDate.Year.ToString() + (bdpFechaInicio.SelectedDate.Month + 100).ToString().Substring(1, 2) + (bdpFechaInicio.SelectedDate.Day + 100).ToString().Substring(1, 2);
                string fin = bdpFechaFin.SelectedDate.Year.ToString() + (bdpFechaFin.SelectedDate.Month + 100).ToString().Substring(1, 2) + (bdpFechaFin.SelectedDate.Day + 100).ToString().Substring(1, 2);
                List<HorarioEN> horarios = HorarioCN.Listar(IdPersona, inicio, fin);
                Repeater repetidor = (Repeater)(e.Item.FindControl("rHorarioxPersona"));
                repetidor.DataSource = horarios;
                repetidor.DataBind();
            }
        }
    }
}